package net.suplementos.dao;

import java.util.ArrayList;
import java.util.List;

import javax.persistence.EntityManager;

import net.suplementos.exception.DAOException;
import net.suplementos.pojo.Fornecedor;

public class FornecedorDAO  extends JPAAbstractDAO<Fornecedor, Integer> {

	public FornecedorDAO(EntityManager manager) throws DAOException {
	    super(manager);
	}

	protected Class<Fornecedor> doGetClass() {
		return Fornecedor.class;
	}

	public List<Fornecedor> consultar(Fornecedor fornecedor) throws DAOException {
       	StringBuilder hql = new StringBuilder("select registro from Fornecedor registro where 1 = 1 ");
       	List<Object> parametros = new ArrayList<Object>();

    	if (fornecedor.getId() != null) {
    		hql.append("and registro.id = ?");
    		parametros.add(fornecedor.getId());
    	}
    	if (fornecedor.getNome() != null && !fornecedor.getNome().trim().equals("")) {
    		hql.append("and registro.nome like ?");
    		parametros.add("%" + fornecedor.getNome() + "%");
    	}
    	if (fornecedor.getContato() != null && !fornecedor.getContato().trim().equals("")) {
    		hql.append("and registro.contato = ?");
    		parametros.add("%" + fornecedor.getContato() + "%");
    	}
    	if (fornecedor.getMarcas() != null && !fornecedor.getMarcas().isEmpty()) {
    		hql.append("and registro.marcas in (?)");
    		parametros.add(fornecedor.getMarcas());
    	}
    	if (fornecedor.getProdutos() != null && !fornecedor.getProdutos().isEmpty()) {
    		hql.append("and registro.produtos in (?)");
    		parametros.add(fornecedor.getProdutos());
    	}
    	

    	return consultar(hql.toString(), parametros.toArray(new Object[parametros.size()]));
	}
}
